#include <iostream>
#include <vector>
using namespace std;
#include <algorithm> // 算法库大多定义于此
// 需要指定g++ -std=c++20
namespace rg = std::ranges;

int main()
{
    std::vector a{4, 1, 6, 2};
    // rg::sort(a);
    // 1、默认从小到大
    rg::sort(a, less{});
    for (auto i : a)
    {
        cout << i << endl;
    }
    cout << "------------------------" << endl;
    // 2、从大到小
    rg::sort(a, rg::greater{});
    for (auto i : a)
    {
        cout << i << endl;
    }
    // 等价与下面这种
    // struct less
    // {
    //     bool operator()(auto a, auto b) const
    //     {
    //         return a < b;
    //     }
    // };
    // struct greater
    // {
    //     bool operator()(auto a, auto b) const
    //     {
    //         return a > b;
    //     }
    // }
    cout << "------------------------" << endl;
    // 1、自定义lambda从小到大排序：适用于自定义类排序
    rg::sort(a, [](int a, int b){ return a < b; });
    for (auto i : a)
    {
        cout << i << endl;
    }
    return 0;
}
